Networks provide computers with the basic ability to transfer data from one computer to another computer. However, in order to be able to communicate with each other, the computers attached to the network require sets of rules for communication called “protocols.” These protocols specify how the computers on the network interact and exchange messages. In most cases, the protocols provide rules for, among other things, the formatting of messages and the handling of errors.
In order to simplify the design and implementation of protocols and provide a computer with the ability to communicate over one or more networks to one or more different computers, programmers have typically used a set of separate, independent protocols where each protocol has different responsibilities. This set of protocols is called a “protocol suite” and covers all forms of a computer's network communications as needed.
A layering model is the most common way to divide a protocol suite into sub-parts and describe each part individually. The most well know layering model for network communications is the seven layer Open Systems Interconnect model introduced by the International Organization for Standardization more than twenty years ago (the “OSI Model”). The basis of this model is illustrated in Table 1.
TABLE 1LayerResponsibilities1. PhysicalSpecifies the electrical and mechanical connectionsto the network2. Data LinkThe data link layer splits data into frames for sendingon the physical layer and receives acknowledgementframes. It performs error checking and re-transmitsframes not received correctly. It provides anerror-free virtual channel to the network layer.The data link layer is split into an uppersub-layer, Logical Link Controls (LLC), and alower sub-layer, Media Access Control (MAC).3. NetworkThe network layer determines routing of packets ofdata from sender to receiver via the data link layerand is used by the transport layer. The most commonnetwork layer protocol is Internet Protocol (IP).4. TransportThe transport layer determines how to use thenetwork layer to provide a virtual error-free, point topoint connection so that host A can send messages tohost B and they will arrive un-corrupted and in thecorrect order. It establishes and dissolvesconnections between hosts. An example transportlayer protocol is Transmission Control Protocol(TCP).5. SessionThe session layer uses the transport layer toestablish a connection between processes on differenthosts. It handles security and creation of the session.6. PresentationPerforms functions such as text compression, codeor format conversion to try to smooth out differencesbetween hosts. Allows incompatible processes in theapplication layer to communicate via the session layer.7. ApplicationThis layer handles issues like network transparency,resource allocation and problem partitioning. Theapplication layer is concerned with the user's viewof the network (e.g. formatting electronic mailmessages). The presentation layer provides theapplication layer with a familiar localrepresentation of data independent ofthe format used on the network.In the foregoing table, the application layer is typically referred to as the “highest” protocol layer and the physical layer is typically referred to as the “lowest” protocol layer.
Under the OSI Model, the sending of data usually is initiated by the application layer which (a) specifies the original data to be sent, (b) creates a data packet by adding to the original data any header or checksum data required by the application layer and then (c) passes the resulting data packet to the presentation layer. The presentation layer then (i) processes the data packet and creates one or more new data packets from the data packet passed to it by the application layer, (ii) adds to each of the new data packets any header or checksum data required by the presentation layer and then (iii) passes the new data packets to the session layer. Processing the data packet may include dividing the packet into smaller pieces in accordance with the processing or memory limits of the current layer. This cycle of (i) processing a passed data packet and creating one or more new data packets from the passed data packet, (ii) adding to each of the new data packets any header or checksum data required by the acting protocol layer and then (iii) passing the new data packets to the next lower protocol layer is then repeated by the session layer and each protocol layer below the session layer until the data packet reaches the physical layer. Once a data packet reaches the physical layer, it is placed onto the physical network for delivery to the receiving computer.
Upon receipt of a data packet from the physical network by the receiving computer's physical layer, the data packet is passed to the data link layer which then (a) processes the data packet and strip off any headers and checksum data added to the data packet by the sending computer's data link layer, (b) combines (as applicable) into a new data packet the processed and stripped data packet and zero or more previously processed and stripped data packets and then (c) passes the resulting data packet to the network layer. This cycle of (i) processing the passed data packet and stripping off any headers and checksum data added to the data packet by the same protocol layer of the sending computer and (ii) combining (as applicable) into a new data packet the processed and stripped data packet with zero or more previously processed and stripped data packets and then (ii) passing the resulting data packet to the next higher protocol layer continues until the data packet reaches the application layer. The application layer then strips off any headers and checksum data added to the original data by the sending computer's application layer and processes the data as necessary.
As shown by the foregoing, (i) during the sending of data, each protocol layer copies the data packet passed to it by a higher protocol level along with any header and checksum data added by the previous protocol layer and (ii) during the receipt of data, each protocol layer copies the received data less any headers and checksums added to the data by such protocol layer on the sending side. In addition, on most computer systems used today, each protocol layer is developed independently by a separate group of programmers with no sharing of code between protocol layers. Therefore, because of this copying of data and no sharing of code between protocol layers, there are significant inefficiencies in processing and memory usage during the sending and receipt of data by computers over a network. The reduction of these inefficiencies and use of memory becomes more important as multiple protocol layers are included in “embedded” applications (e.g. home appliances, monitoring equipment, etc.) which will, because of various cost pressures, be implemented using less costly microprocessors having significantly less processing power and memory than stand alone computer systems.